문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 스트리밍 SIMD 확장 (문단 편집) == SSE 이전의 SIMD 구현 == [[SIMD]]문서에서 설명된 것과 같이 [[VLIW]]같은 것을 제외하면 일반적인 범용 프로세서들의 기본 동작은 한 명령어는 한 데이터를 처리하는 것으로 되어 있다. MMX가 도입되기 이전의 인텔 프로세서들 또한 이는 마찬가지였기에 인텔은 MMX라는 64비트 SIMD 명령어 세트를 도입했다. MMX는 64비트의 너비를 가지고 있어 8/16/32비트의 Packed math 처리와 64비트의 bitwise연산이 가능했고 이 덕분에 정수기반의 연산 성능은 급격히 증가했으며 이 특징 덕분에 8비트 정수 기반의 소프트웨어 기반 비디오 코덱들과 이미지 처리성능이 크게 향상되었다. 다만 첫 시도가 완벽한 것은 아니였는데 SSE이후의 SIMD 세트는 독립적인 연산 유닛과 레지스터를 가지고 있는 것에 비해 MMX는 x87 FPU를 공유해서 사용했다. 이 전략은 프로세서의 트랜지스터 갯수를 절약하는데 있어서 도움이 되긴 했으나 이런 구조적 문제로 인해 MMX와 부동소숫점 연산을 파이프라인 내에서 동시에 사용 할 수 없었던 데다 MMX를 사용하므로써 프로세서 내부의 스테이트 플래그가 켜지면 x87 명령어를 사용할 때마다 레지스터의 내용을 스위치해 {{{emms}}}명령어를 사용해서 프로세서에게 더이상 MMX명령어를 사용하지 않는다고 알려줘야 성능의 저하가 일어나지 않았다. 또한 MMX는 정수 연산만 가능하다는 문제점이 있어 이미지 처리와 같은 정수 영역과 같은 특정 영역에서만 성능을 발휘할 수 있었고 3D와 같이 부동소수점 연산을 주로 사용하는 영역에서는 사용이 불가능했는데 이는 AMD가 MMX와 더불어 부동소수점 연산이 가능한 3DNow!를 가져오면서 해결된다. 3DNow! 또한 x87과 레지스터를 공유하긴 했지만 3DNow!는 애초에 MMX에 없는 부동소수점 연산을 위한 명령어 세트였다 보니 크게 문제가 되지는 않았다. 또한 3DNow!는 단순히 MMX에 없는 부동소수점 연산만을 추가한 것이 아니라 MMX에 없는 최대/최소, 평균, 셔플연산이 추가되었고 이러한 3DNow!에서 추가된 부족한 기능들은 SSE에 가서야 부동소수점에 한정되어 추가되고 SSE2에 가서 정수연산에 추가되게 된다. 물론 MMX를 가지고 최대/최소/평균 연산이 불가능 한 것은 아니지만 3DNow!가 한 명령어면 되는 것에 비해 여러 명령어를 조합하고 더 많은 레지스터를 사용하여 구현해야 하다 보니 스루풋이 낮아질 수밖에 없다. 3DNow!는 128비트의 너비를 가지고 부동소수점 연산이 가능한 SSE가 등장하며 쓰이지 않지만 프로세서에게 캐시에 미리 데이터를 올려 놓는 {{{PREFETCHW}}}명령어는 2022년 현재에도 쓰이고 있고 [[Windows 10]]와 같은 운영체제들은 이 명령어를 필수로 요구하고 있다. MMX의 경우는 애초에 x87레지스터와 공유되고 있는데다 x87기반 부동소수점 연산 또한 [[AMD64]]이후 부터는 SSE의 FP유닛을 사용하는 것으로 변경되어 [[AMD64]]에서 모든 SSE의 XMM 레지스터와 범용 레지스터의 갯수가 8개에서 16개로 증가했지만 MMX의 MM 레지스터는 8개로 동결되었으며 단순히 하위 호환성을 위해 남겨져 있는 상태이다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기